// function f(c) {
//   return class Test extends c {
//     public age: number;
//     static testName = 'nihao'
//     constructor(...args: [number, ...Array<any>]) {
//       super(args[0])
//     }

//     get name () {
//       return 'test'
//     }
//   }
// }

// @f
class C {
  public age: number;
  constructor(age) {
    this.age = age;
  }
}

class Test extends C {
  static testName = 'nihao'
  constructor(...args: [number, ...Array<any>]) {
    super(args[0])
  }

  get name () {
    return 'test'
  }
}

const c = new Test(12)
console.log((Test as any).testName, c, c instanceof Test, (c as any).name)